<?php

namespace app\adminapi\controller;

use think\Controller;
use think\Request;
use app\common\model\Role as RoleModel;

class Role extends BaseApi
{
    /**
     * 显示资源列表
     *
     * @return \think\Response
     */
    public function index()
    {
        //查询数据,超级管理员不查询
        $list = RoleModel::where('id','>',1)->select();
        foreach ($list as $k => $v){
            //查询权限表
            $auths = \app\common\model\Auth::where('id','in',$v['role_auth_ids'])->select();
            //转化为二维数组
            $auths = (new \think\Collection($auths))->toArray();
            //转为父子级树状结构
            $auths = get_tree_list($auths);
            $list[$k]['role_auths'] = $auths;
        }
        unset($v);
        $this->ok($list);
    }

    /**
     * 显示创建资源表单页.
     *
     * @return \think\Response
     */
    public function create()
    {

    }

    /**
     * 保存新建的资源
     *
     * @param  \think\Request  $request
     * @return \think\Response
     */
    public function save(Request $request)
    {
        $params = input();
        $validate = $this->validate($params,[
            'role_name'=>'require',
            'auth_ids'=>'require'
        ]);
        if ($validate !== true){
            $this->fail($validate);
        }
        $params['role_auth_ids'] = $params['auth_ids'];
        $role = RoleModel::create($params,true);
        $row = RoleModel::find($role['id']);
        $this->ok($row);
    }

    /**
     * 显示指定的资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function read($id)
    {
        $info = RoleModel::find($id);
        $this->ok($info);
    }

    /**
     * 显示编辑资源表单页.
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * 保存更新的资源
     *
     * @param  \think\Request  $request
     * @param  int  $id
     * @return \think\Response
     */
    public function update(Request $request, $id)
    {
        //
    }

    /**
     * 删除指定资源
     *
     * @param  int  $id
     * @return \think\Response
     */
    public function delete($id)
    {
        if ($id==1){
            $this->fail('超级管理不能删除');
        }
        $total = \app\common\model\Admin::where('role_id',$id)->count();
        if ($total>0){
            $this->fail('角色正在使用中，无法删除');
        }else{
            RoleModel::destroy($id);
            $this->ok();
        }
    }
}
